5.09. Встроенные функции в Kotlin
Встроенные функции в Kotlin
Функции создания коллекций
| Функция | Значение | Пример |
|---|---|---|
listOf() | Создаёт неизменяемый список из переданных элементов | val numbers = listOf(1, 2, 3) |
mutableListOf() | Создаёт изменяемый список | val items = mutableListOf("a", "b") |
setOf() | Создаёт неизменяемое множество без дубликатов | val unique = setOf(1, 2, 2, 3) |
mutableSetOf() | Создаёт изменяемое множество | val tags = mutableSetOf("kotlin", "java") |
mapOf() | Создаёт неизменяемую ассоциативную коллекцию | val user = mapOf("name" to "Alex", "age" to 30) |
mutableMapOf() | Создаёт изменяемую ассоциативную коллекцию | val config = mutableMapOf("debug" to true) |
arrayOf() | Создаёт массив объектов | val names = arrayOf("Tom", "Jane") |
intArrayOf() | Создаёт массив примитивов типа Int | val ids = intArrayOf(101, 102, 103) |
doubleArrayOf() | Создаёт массив примитивов типа Double | val prices = doubleArrayOf(19.99, 29.50) |
booleanArrayOf() | Создаёт массив примитивов типа Boolean | val flags = booleanArrayOf(true, false) |
charArrayOf() | Создаёт массив примитивов типа Char | val letters = charArrayOf('a', 'b', 'c') |
byteArrayOf() | Создаёт массив примитивов типа Byte | val data = byteArrayOf(0x01, 0x02) |
shortArrayOf() | Создаёт массив примитивов типа Short | val ports = shortArrayOf(8080, 3000) |
longArrayOf() | Создаёт массив примитивов типа Long | val bigNumbers = longArrayOf(10000000000L) |
floatArrayOf() | Создаёт массив примитивов типа Float | val coords = floatArrayOf(1.5f, 2.7f) |
emptyList() | Возвращает пустой неизменяемый список | val empty = emptyList<String>() |
emptySet() | Возвращает пустое неизменяемое множество | val none = emptySet<Int>() |
emptyMap() | Возвращает пустую неизменяемую карту | val blank = emptyMap<String, Any>() |
sequenceOf() | Создаёт последовательность из элементов | val seq = sequenceOf(1, 2, 3) |
generateSequence() | Создаёт ленивую последовательность по правилу | val naturals = generateSequence(1) { it + 1 } |
Функции преобразования коллекций
| Функция | Значение | Пример |
|---|---|---|
map() | Преобразует каждый элемент в новый | val squares = numbers.map { it * it } |
filter() | Оставляет элементы по условию | val evens = numbers.filter { it % 2 == 0 } |
flatMap() | Преобразует и объединяет вложенные коллекции | val words = lines.flatMap { it.split(" ") } |
sorted() | Сортирует элементы по возрастанию | val ordered = items.sorted() |
sortedDescending() | Сортирует элементы по убыванию | val reversed = items.sortedDescending() |
sortedBy() | Сортирует по значению селектора | val byName = users.sortedBy { it.name } |
sortedByDescending() | Сортирует по убыванию значения селектора | val byAge = users.sortedByDescending { it.age } |
groupBy() | Группирует элементы по ключу | val byLength = words.groupBy { it.length } |
associate() | Создаёт карту из пар ключ-значение | val idsByName = users.associate { it.name to it.id } |
associateBy() | Создаёт карту с ключом из селектора | val usersById = users.associateBy { it.id } |
toSet() | Преобразует в неизменяемое множество | val unique = list.toSet() |
toList() | Преобразует в неизменяемый список | val snapshot = set.toList() |
toMutableList() | Преобразует в изменяемый список | val editable = set.toMutableList() |
toMap() | Преобразует последовательность пар в карту | val result = pairs.toMap() |
distinct() | Удаляет дубликаты из коллекции | val unique = items.distinct() |
distinctBy() | Удаляет дубликаты по значению селектора | val uniqueNames = users.distinctBy { it.name } |
Функции проверки условий
| Функция | Значение | Пример |
|---|---|---|
any() | Проверяет наличие хотя бы одного подходящего элемента | val hasErrors = logs.any { it.contains("ERROR") } |
all() | Проверяет, что все элементы соответствуют условию | val valid = inputs.all { it.isNotBlank() } |
none() | Проверяет отсутствие элементов по условию | val clean = items.none { it.isEmpty() } |
contains() | Проверяет наличие элемента в коллекции | val found = list.contains("target") |
first() | Возвращает первый элемент коллекции | val head = items.first() |
firstOrNull() | Возвращает первый элемент или null | val maybe = items.firstOrNull() |
last() | Возвращает последний элемент коллекции | val tail = items.last() |
lastOrNull() | Возвращает последний элемент или null | val maybeLast = items.lastOrNull() |
single() | Возвращает единственный элемент коллекции | val only = list.single() |
singleOrNull() | Возвращает единственный элемент или null | val maybeOnly = list.singleOrNull() |
find() | Возвращает первый подходящий элемент или null | val match = users.find { it.id == 42 } |
count() | Подсчитывает количество элементов | val total = items.count() |
count { } | Подсчитывает элементы по условию | val active = users.count { it.isActive } |
isEmpty() | Проверяет пустоту коллекции | val blank = list.isEmpty() |
isNotEmpty() | Проверяет непустоту коллекции | val filled = list.isNotEmpty() |
isNullOrEmpty() | Проверяет пустоту или null для коллекций | val empty = nullableList.isNullOrEmpty() |
Функции извлечения подколлекций
| Функция | Значение | Пример |
|---|---|---|
take() | Берёт первые N элементов | val preview = items.take(5) |
takeLast() | Берёт последние N элементов | val recent = logs.takeLast(10) |
takeWhile() | Берёт элементы до нарушения условия | val prefix = numbers.takeWhile { it < 10 } |
drop() | Пропускает первые N элементов | val rest = items.drop(3) |
dropLast() | Пропускает последние N элементов | val older = logs.dropLast(5) |
dropWhile() | Пропускает элементы до нарушения условия | val suffix = numbers.dropWhile { it < 10 } |
slice() | Извлекает элементы по индексам | val part = list.slice(1..3) |
chunked() | Разбивает коллекцию на части заданного размера | val pages = items.chunked(20) |
windowed() | Создаёт скользящие окна по коллекции | val pairs = numbers.windowed(2) |
zip() | Объединяет две коллекции в пары | val pairs = names.zip(ages) |
unzip() | Разделяет коллекцию пар на две коллекции | val (keys, values) = pairs.unzip() |
Функции свёртки и агрегации
| Функция | Значение | Пример |
|---|---|---|
fold() | Сворачивает коллекцию с начальным значением | val sum = numbers.fold(0) { acc, n -> acc + n } |
foldRight() | Сворачивает коллекцию справа налево | val result = items.foldRight("") { item, acc -> "$item $acc" } |
reduce() | Сворачивает коллекцию без начального значения | val total = numbers.reduce { acc, n -> acc + n } |
reduceRight() | Сворачивает коллекцию справа налево без начального значения | val text = words.reduceRight { w, acc -> "$w $acc" } |
joinToString() | Объединяет элементы в строку с разделителем | val csv = items.joinToString(", ") |
sum() | Вычисляет сумму числовых элементов | val total = numbers.sum() |
sumBy() | Вычисляет сумму по результатам функции | val priceSum = products.sumBy { it.price } |
sumOf() | Вычисляет сумму по селектору (новее чем sumBy) | val total = items.sumOf { it.value } |
average() | Вычисляет среднее арифметическое | val avg = numbers.average() |
minOrNull() | Находит минимальный элемент или null | val lowest = numbers.minOrNull() |
maxOrNull() | Находит максимальный элемент или null | val highest = numbers.maxOrNull() |
minByOrNull() | Находит элемент с минимальным значением селектора | val youngest = users.minByOrNull { it.age } |
maxByOrNull() | Находит элемент с максимальным значением селектора | val oldest = users.maxByOrNull { it.age } |
Функции области видимости
| Функция | Значение | Пример |
|---|---|---|
let | Выполняет блок с объектом как this, возвращает результат блока | val length = str?.let { it.length } ?: 0 |
run | Выполняет блок с объектом как this, возвращает результат блока | val result = obj.run { compute() + extra } |
with | Выполняет блок с объектом как this, возвращает результат блока | with(config) { host + ":" + port } |
apply | Выполняет блок с объектом как this, возвращает сам объект | val button = Button().apply { text = "OK"; onClick = handler } |
also | Выполняет блок с объектом как аргумент, возвращает сам объект | val file = File(path).also { it.deleteOnExit() } |
Функции работы со строками
| Функция | Значение | Пример |
|---|---|---|
trim() | Удаляет пробельные символы по краям | val clean = " text ".trim() |
trimStart() | Удаляет пробельные символы в начале | val right = " text".trimStart() |
trimEnd() | Удаляет пробельные символы в конце | val left = "text ".trimEnd() |
split() | Разделяет строку по разделителю | val parts = "a,b,c".split(",") |
replace() | Заменяет подстроку | val fixed = text.replace("old", "new") |
substring() | Извлекает часть строки по индексам | val part = text.substring(0, 5) |
toLowerCase() | Преобразует в нижний регистр | val lower = "HELLO".toLowerCase() |
toUpperCase() | Преобразует в верхний регистр | val upper = "hello".toUpperCase() |
capitalize() | Делает первую букву заглавной | val title = "text".capitalize() |
decapitalize() | Делает первую букву строчной | val varName = "Text".decapitalize() |
toInt() | Преобразует строку в целое число | val number = "42".toInt() |
toDouble() | Преобразует строку в число с плавающей точкой | val price = "19.99".toDouble() |
toBoolean() | Преобразует строку в логическое значение | val flag = "true".toBoolean() |